/*
 * @ author madman 
 * @ use 接口配置
 * @ 逻辑层实现 /controllers/*
 */

import controllers from '../controllers/controllers.export';
const router = require('koa-router')();
const path = require('path')
const CountryModel = require('../models/nexmo/country.model');
const Utils = require('../controllers/utils');
// cors 处理跨域
router.all('/api/**/*', async(ctx, next) => {
    ctx.set("Access-Control-Allow-Origin", "*");
    await next();
});
//判断函数是否存在
function isExitsFunction(funcName) {  
    try {  
        if (typeof (eval(funcName)) == "function") {  
            return true;  
        }  
    } catch (e) {  
    }  
    return false;  
} 
router
    // 购买电话管理
    .get('/api/nexmo/country/list', Utils.checkToken, controllers.countryController.list)
    .get('/api/nexmo/number/list', Utils.checkToken, controllers.nexmonumberController.list)
    .post('/api/nexmo/number/buy', Utils.checkToken, controllers.nexmonumberController.buy)
    // 后台菜单管理
    .post(`/api/system/power/add`, Utils.checkToken, controllers.powerController.add) // 添加
    .post(`/api/system/power/update`, Utils.checkToken, controllers.powerController.update) // 更新
    .get(`/api/system/power/delete`, Utils.checkToken, controllers.powerController.delete) // 删除
    .post(`/api/system/power/batchdelete`, Utils.checkToken, controllers.powerController.batchdelete) // 批量删除
    .get(`/api/system/power/list`, Utils.checkToken, controllers.powerController.list) // 获取列表
    // 价格配置管理
    .post(`/api/nexmo/price/add`, Utils.checkToken, controllers.priceController.add) // 添加
    .post(`/api/nexmo/price/update`, Utils.checkToken, controllers.priceController.update) // 更新
    .get(`/api/nexmo/price/delete`, Utils.checkToken, controllers.priceController.delete) // 删除
    .post(`/api/nexmo/price/batchdelete`, Utils.checkToken, controllers.priceController.batchdelete) // 批量删除
    .get(`/api/nexmo/price/list`, Utils.checkToken, controllers.priceController.list) // 获取列表


    // 呼出价格配置管理
    .post(`/api/nexmo/priceout/add`, Utils.checkToken, controllers.priceOutController.add) // 添加
    .post(`/api/nexmo/priceout/update`, Utils.checkToken, controllers.priceOutController.update) // 更新
    .get(`/api/nexmo/priceout/delete`, Utils.checkToken, controllers.priceOutController.delete) // 删除
    .get(`/api/nexmo/priceout/list`, Utils.checkToken, controllers.priceOutController.list) // 获取列表

    // 其他设置
    .post(`/api/nexmo/othenr/add`, Utils.checkToken, controllers.othenrController.add) // 添加
    .post(`/api/nexmo/othenr/update`, Utils.checkToken, controllers.othenrController.update) // 更新
    .get(`/api/nexmo/othenr/query`, Utils.checkToken, controllers.othenrController.query) // 删除
    .get(`/api/nexmo/othenr/batchdelete`, Utils.checkToken, controllers.othenrController.batchdelete) // 批量删除
    .get(`/api/nexmo/othenr/delete`, Utils.checkToken, controllers.othenrController.delete) // 删除
    .get(`/api/nexmo/othenr/list`, Utils.checkToken, controllers.othenrController.list) // 获取列表
    // 用户列表
    .post(`/api/nexmo/user/list`, Utils.checkToken, controllers.usersetupController.add) // 获取列表
    
    // 呼入呼出
    .all(`/event`,controllers.webhookController.Event) // 接收打完电话后的数据回调
    .get(`/answer`, controllers.webhookController.Answer) // Answer拨打和接听电话回调
    .get(`/api/gettoken`,controllers.webhookController.GetToken) // 获取token

    // 联系列表
    .post(`/api/contact/add`, controllers.contactController.add) // 添加联系人
    .get(`/api/contact/list`, controllers.contactController.list) // 获取联系人列表
    // 通话记录
    .post(`/api/records/add`,controllers.callrecordsController.add) // C端通话记录添加
    .get(`/api/records/query`, Utils.checkToken, controllers.callrecordsController.query) // 查询通话记录
    .get(`/api/records/list`, controllers.callrecordsController.list) // C端通话记录列表
    // 充值记录
    .post(`/api/topup/add`,Utils.checkToken, controllers.topupController.add) // 充值记录添加
    .get(`/api/tupup/list`, Utils.checkToken, controllers.topupController.list) // 查询充值记录列表

    // 月租记录
    .get(`/api/rental/list`, Utils.checkToken, controllers.rentalController.list) // 查询月租记录列表

    .post('/api/nexmo/import/excel', Utils.checkToken, controllers.excelController.importExcel)  //价络配置导入
    // 客户列表管理
    .get(`/api/client/query`, Utils.checkToken, controllers.clientController.query) // 查询APPID
    .post(`/api/nexmo/client/update`, Utils.checkToken, controllers.clientController.update) // 更新列表
    .get(`/api/nexmo/client/list`, Utils.checkToken, controllers.clientController.list) // 获取列表
     // 管理员登录退出
    .get('/api/system/logout', controllers.adminController.logout) // 用户退出
    .post('/api/system/login', controllers.adminController.login) // 用户登录
    .get('/api/system/info', Utils.checkToken, controllers.adminController.getUserInfo) // 获取用户信息
    .get('/api/system/power', Utils.checkToken, controllers.adminController.getUserPower) // 获取用户权限
    .post('/api/system/login', controllers.adminController.login) // 用户登录
    

module.exports = router;